技術文章
技術問答
iT 徵才
聊天室
2026 鐵人賽
登入/註冊
文章
問答
Tag
邦友
鐵人賽
搜尋
2024 iThome 鐵人賽
DAY
30
0
佛心分享-IT 人自學之術
Python學習馬拉松:30天挑戰
系列 第
30
篇
Day30. 實作練習:馬可夫鏈文本生成器 Markov Chain Text Composer
16th鐵人賽
sheep
2024-10-14 14:56:40
852 瀏覽
分享至
教學來源:https://www.youtube.com/watch?v=8ext9G7xspg
這個專案是一個基於馬可夫鏈(Markov Chain)的文本生成器,透過分析文本中的單詞之間的關聯,來生成新文本。
➤ 馬可夫鏈文本生成器的核心概念是透過「當前狀態」來決定「下一個狀態」,在這裡,狀態指的是一個單詞。換句話說,這個程式的目標是根據已知文本中單詞的排列規則,模擬生成類似的文本。
程式碼:
➤ compose.py:
➤ graph.py:
執行3次程式碼的結果:
程式說明:
➤ compose.py:
get_words_from_text函數:
-從給定的文本檔案中讀取內容,去除標點符號,將文本轉換為小寫,並分割成最多 1000 個單詞的列表。
make_graph函數:
-建立一個圖(Graph)來表示單詞之間的關聯。每個單詞是圖中的一個節點(Vertex),如果兩個單詞在文本中連續出現,則在它們之間建立一條邊,邊的權重表示它們一起出現的頻率。
-該圖的功能是幫助後續生成文本時,根據單詞的出現頻率來預測下一個單詞。
compose函數:
-使用生成的圖,隨機選擇一個單詞作為起點,並根據圖中節點之間的關聯逐步生成文本。文本的長度由 length 參數決定(默認為 50 個單詞)。
main函數:
-讀取指定文本檔案,提取單詞,建立單詞之間的關聯圖,並最終生成一段隨機文本。
➤ graph.py:
Vertex 類別:
-圖中的節點,表示一個單詞。每個節點都有一個 adjacent 字典,用來儲存與其他單詞的關聯及其權重。當兩個單詞一起出現時,增加它們之間邊的權重。
-還包含一個方法 next_word(),用來根據關聯單詞的權重,隨機選擇下一個單詞。
Graph 類別:
-圖結構,用來管理所有單詞及它們之間的關聯。每個單詞都是圖中的一個節點,可以根據關聯性預測下一個單詞。
-generate_probability_mappings 用來為每個單詞生成一個概率映射,讓文本生成器根據權重來選擇下一個單詞。
留言
追蹤
檢舉
上一篇
Day29. 實作練習:圈圈叉叉Tic-Tac-Toe --AI
系列文
Python學習馬拉松:30天挑戰
共
30
篇
目錄
RSS系列文
訂閱系列文
2
人訂閱
26
Day26. 實作練習:Binary Search
27
Day27. 實作練習:踩地雷遊戲 Minesweeper
28
Day28. 實作練習:數獨解決器Sudoku Solver
29
Day29. 實作練習:圈圈叉叉Tic-Tac-Toe --AI
30
Day30. 實作練習:馬可夫鏈文本生成器 Markov Chain Text Composer
完整目錄
熱門推薦
{{ item.subject }}
{{ item.channelVendor }}
|
{{ item.webinarstarted }}
|
{{ formatDate(item.duration) }}
直播中
立即報名
尚未有邦友留言
立即登入留言
iThome鐵人賽
參賽組數
902
組
團體組數
37
組
累計文章數
19837
篇
完賽人數
528
人
看影片追技術
看更多
{{ item.subject }}
{{ item.channelVendor }}
|
{{ formatDate(item.duration) }}
直播中
熱門tag
15th鐵人賽
16th鐵人賽
13th鐵人賽
14th鐵人賽
17th鐵人賽
12th鐵人賽
11th鐵人賽
鐵人賽
2019鐵人賽
javascript
2018鐵人賽
python
2017鐵人賽
windows
php
c#
linux
windows server
css
react
熱門問題
Seeed XIAO ESP32-S3 透過 UART (921600) 無法發送 AT 指令到 Grove Vision AI V2 (Himax WE2)
Windows XP作業系統,程式存取SQL SERVER 2025失敗
SAP B1 如何將"自定義表格"匯出並且匯入到另一個資料庫
webview cab 封包檔
熱門回答
Windows XP作業系統,程式存取SQL SERVER 2025失敗
SAP B1 如何將"自定義表格"匯出並且匯入到另一個資料庫
熱門文章
[AI Agent 架構筆記] 記憶系統真正的敵人不是忘記,而是錯誤地一直記得——我做 AI 長期記憶的結構化設計與翻車實錄
[AI Agent 架構筆記] 我不信任 AI 的自律,所以把「限制」寫死在資料庫裡
AI Agent 時代的下一個問題:當第 101 次決策出錯時,誰來負責?
被回答了,還是被消失了?
ERP 該為哪一代前端技術下注?
IT邦幫忙
×
標記使用者
輸入對方的帳號或暱稱
Loading
找不到結果。
標記
{{ result.label }}
{{ result.account }}